/**
 * 
 */
package br.com.sc.persistencia.dao.impl;

import java.util.List;

import javax.persistence.Query;

import br.com.sc.excecao.SCException;
import br.com.sc.negocio.entidade.Equipe;
import br.com.sc.persistencia.dao.EquipeDAO;
import br.com.sc.persistencia.dao.SCCrudDao;

/**
 * @author Flavio Canedo
 *
 */
public class EquipeDaoImpl extends SCCrudDao<Equipe> implements EquipeDAO{

	/**
	 * @param clazz
	 */
	public EquipeDaoImpl() {
		super(Equipe.class);
	}

	/**
	 * 
	 */
	@SuppressWarnings("unchecked")
	public List<Equipe> listarEquipes() {
		StringBuilder comando = new StringBuilder();
		comando.append(criarComandoPesquisa(clazz));
		
		Query query = getEntityManager().createQuery(comando.toString());
		return (List<Equipe>) query.getResultList();
	}

	/**
	 * @see br.com.sc.persistencia.dao.SCCrudDaoIF#consultar(br.com.sc.negocio.entidade.SCEntidade)
	 */
	@SuppressWarnings("unchecked")
	@Override
	public List<Equipe> consultar(Equipe criterios) throws SCException {
		StringBuilder comando = new StringBuilder();
		comando.append(criarComandoPesquisa(clazz));

		comando.append("WHERE 1 = 1 \n");
		if (criterios.getNomeEquipe() != null && criterios.getNomeEquipe().length() != 0) {
			comando.append("AND entidade.nomeEquipe like '%" + criterios.getNomeEquipe()+ "%'");
		}
		comando.append(" ORDER BY entidade.nomeEquipe ASC ");
		Query query = getEntityManager().createQuery(comando.toString());
		return (List<Equipe>) query.getResultList();
	}

	/**
	 * 
	 */
	@SuppressWarnings("unchecked")
	@Override
	public List<Equipe> procurarEquipe(Equipe criterios) throws SCException {
		StringBuilder comando = new StringBuilder();
		comando.append(criarComandoPesquisa(clazz));
		comando.append("WHERE 1=1 \n");
		
		if (criterios.getNomeEquipe() != null && criterios.getNomeEquipe().length() > 0){
			comando.append("AND entidade.equipe.nomeEquipe like '%"
					+ criterios.getNomeEquipe() + "%' ");
		}
		
		Query query = getEntityManager().createQuery(comando.toString());
		return (List<Equipe>) query.getResultList();
	}

	
}
